package com.codefish.framework.spring.beans.factory.support;

import com.codefish.framework.spring.beans.exception.BeanDefinitionStoreException;
import com.codefish.framework.spring.core.io.Resource;

/**
 * 定义了从资源文件加载BeanDefinition的基本操作
 *
 * @author <a href='https://gitee.com/hzf2281'>codefish</a>
 * @version 1.0.0
 * @since 2022/10/01 下午 04:10
 */
public interface IBeanDefinitionReader {

    /**
     *  获取BeanDefinitionRegistry
     * @return BeanDefinitionRegistry
     */
    IBeanDefinitionRegistry getRegistry();

    /**
     * 从指定的资源中加载BeanDefinition
     * @param resource 资源对象
     * @return 资源对象中包含BeanDefinition的格式
     * @throws BeanDefinitionStoreException 资源中定义的BeanDefinition不合法时抛出
     */
    int loadBeanDefinitions(Resource resource) throws BeanDefinitionStoreException;

    /**
     * 获取用于加载类的classLoader
     * @return classLoader
     */
    ClassLoader getBeanClassLoader();
}

